package net.zdsoft.wpchat.support.dao;

import java.util.List;
import java.util.Map;

import net.zdsoft.wpchat.support.entity.AuthCatalog;
import net.zdsoft.wpchat.support.entity.AuthModule;
import net.zdsoft.wpchat.support.entity.AuthOperation;
import net.zdsoft.wpchat.support.entity.GroupPermission;

/**
 * 群组对应权限关系dao
 *
 * @author xuan
 */
public interface GroupPermDao {
	/**
	 * 根据群组id数组查找所有群组关联权限操作的列表
	 * @param gourpIds
	 * @return
	 */
	List<GroupPermission> findByGroupIds(String... gourpIds);

	/**
	 * 根据群组id数组，删除这些群组所有对应的权限操作
	 *
	 * @param groupIds
	 */
	void deleteByGroupIds(String... groupIds);

	/**
	 * 根据群组id，删除这些群组所有对应的权限操作
	 *
	 * @param groupId
	 */
	void deleteGroupPerms(String groupId);

	/**
	 * 根据群组id和大类目录，删除这个群组下的所有这个大类目录下的权限操作
	 *
	 * @param groupId
	 * @param catalogId
	 */
	void deleteGroupPerms(String groupId, String catalogId);

	/**
	 * 批量删除群组对应权限操作
	 *
	 * @param groupPerms
	 */
	void insertGroupPerms(GroupPermission... groupPerms);

	/**
	 * 根据后台用户id和模块map，查找所有的操作权限map
	 * @param moduleMap
	 * @param operatorId
	 * @return
	 */
	Map<String, AuthOperation> findOperationMap(
			Map<String, AuthModule> moduleMap, String operatorId);


	/**
	 * 根据后台用户id和大类目录map，查找素有的模块权限map
	 * @param catalogMap
	 * @param operatorId
	 * @return
	 */
	Map<String, AuthModule> findModuleMap(Map<String, AuthCatalog> catalogMap,
			String operatorId);


	/**
	 * 根据后台用户id，查找大类目录map
	 *
	 * @param operatorId
	 * @return
	 */
	Map<String, AuthCatalog> findCatalogMap(String operatorId);

}
